package model

import (
	"gitee.com/liumou_site/logger"
	"github.com/spf13/cast"
	"math/rand"
	"os"
	"sync"
)

func (api *DownLoad) Start() {
	var wg sync.WaitGroup // 定义一个计数器
	var url string
	if api.Debug {
		logger.Debug("当前版本: ", api.Version)
	}
	api.DeleteDir()
	api.Mkdir() // 开始检测并创建文件夹
	//api.GetKey() // 开始获取Key值
	err, i2 := api.GetUrlTotal()
	if err != nil {
		logger.Error("无法获取总数")
		os.Exit(2)
		return
	}
	if i2 == 0 {
		logger.Error("总数为0")
		os.Exit(2)
		return
	}
	logger.Debug("当前设置线程数: ", api.Thread)
	for i := 1; i <= api.Thread; i++ {
		wg.Add(1)
		ii := 1
		if i2 > 1 {
			ii = rand.Intn(i2)
		}
		logger.Debug("当前设置随机数: ", ii)
		err, url = api.GetUrlInId(cast.ToString(ii))
		if err != nil {
			return
		}
		go StartDownLoadFile(url, cast.ToString(ii), api.SavePath, &wg)
	}
	wg.Wait()
}
